package io.eleKing.boot.weather.entity;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.NullSerializer;
import lombok.Data;
import lombok.EqualsAndHashCode;
import com.baomidou.mybatisplus.annotation.*;
import io.eleKing.boot.system.entity.BaseEntity;

import java.util.Date;

/**
 * 
 *
 * @author eleKing
 * @since 2025-04-15
 */
@Data
@TableName("weather_day_data")
@EqualsAndHashCode(callSuper = true)
public class WeatherDayData extends BaseEntity {

    private static final long serialVersionUID = 1L;
    protected Integer stationLevel;
    private String district;
    private String stationId;
    private Integer regionStation;
    /**
     * 数据时间
     */
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm")
    private Date dataTime;

    /**
     * 年
     */
    private Integer year;

    /**
     * 月
     */
    private Integer month;

    /**
     * 日
     */
    private Integer day;

    /**
     * 平均气压	(hPa)
     */
    @JsonSerialize(nullsUsing = NullSerializer.class)
    private Double prsAvg;

    /**
     * 最高气压	(hPa)
     */
    @JsonSerialize(nullsUsing = NullSerializer.class)
    private Double prsMax;

    /**
     * 最高本站气压出现时间
     */
    @JsonFormat(timezone = "GMT+8", pattern = "HH:mm")
    private Date prsMaxAppearTime;

    /**
     * 最低本站气压	(hPa)
     */
    @JsonSerialize(nullsUsing = NullSerializer.class)
    private Double prsMin;

    /**
     * 最低本站气压出现时间
     */
    @JsonFormat(timezone = "GMT+8", pattern = "HH:mm")
    private Date prsMinAppearTime;

    /**
     * 平均海平面气压	(hPa)
     */
    @JsonSerialize(nullsUsing = NullSerializer.class)
    private Double prsSeaAvg;

    /**
     * 平均气温 (℃)
     */
    @JsonSerialize(nullsUsing = NullSerializer.class)
    private Double temAvg;

    /**
     * 最高气温 (℃)
     */
    @JsonSerialize(nullsUsing = NullSerializer.class)
    private Double temMax;

    /**
     * 最高气温出现时间
     */
    @JsonFormat(timezone = "GMT+8", pattern = "HH:mm")
    private Date temMaxAppearTime;

    /**
     * 最低气温 (℃)
     */
    @JsonSerialize(nullsUsing = NullSerializer.class)
    private Double temMin;

    /**
     * 最低气温出现时间
     */
    @JsonFormat(timezone = "GMT+8", pattern = "HH:mm")
    private Date temMinAppearTime;

    /**
     * 平均水气压 (hpa)
     */
    @JsonSerialize(nullsUsing = NullSerializer.class)
    private Double vapAvg;

    /**
     * 平均相对湿度 (%)
     */
    @JsonSerialize(nullsUsing = NullSerializer.class)
    private Integer rhuAvg;

    /**
     * 最小相对湿度 (%)
     */
    @JsonSerialize(nullsUsing = NullSerializer.class)
    private Integer rhuMin;

    /**
     * 最小相对湿度出现时间
     */
    @JsonFormat(timezone = "GMT+8", pattern = "HH:mm")
    private Date rhuMinAppearTime;

    /**
     * 平均总云量 (%)
     */
    @JsonSerialize(nullsUsing = NullSerializer.class)
    private Double cloCovAvg;

    /**
     * 平均低云量 (%)
     */
    @JsonSerialize(nullsUsing = NullSerializer.class)
    private Double cloCovLowAvg;

    /**
     * 最小水平能见度 (m)
     */
    @JsonSerialize(nullsUsing = NullSerializer.class)
    private Integer visMin;

    /**
     * 最小水平能见度出现时间
     */
    @JsonFormat(timezone = "GMT+8", pattern = "HH:mm")
    private Date visMinAppearTime;

    /**
     * 1小时最大降水量 (mm)
     */
    @JsonSerialize(nullsUsing = NullSerializer.class)
    private Double preMax1h;

    /**
     * 1小时最大降水量出现时间
     */
    @JsonSerialize(nullsUsing = NullSerializer.class)
    private Date preMax1hAppearTime;

    /**
     * 20-20时降水量 (mm)
     */
    @JsonSerialize(nullsUsing = NullSerializer.class)
    private Double preTime2020;

    /**
     * 08-08时降水量 (mm)
     */
    @JsonSerialize(nullsUsing = NullSerializer.class)
    private Double preTime0808;

    /**
     * 积雪深度 (cm)
     */
    @JsonSerialize(nullsUsing = NullSerializer.class)
    private Double snowDepth;

    /**
     * 雪压 (kg·m-2)
     */
    @JsonSerialize(nullsUsing = NullSerializer.class)
    private Double snowPrs;

    /**
     * 扬沙
     */
    @JsonSerialize(nullsUsing = NullSerializer.class)
    private Integer weatherFlSa;

    /**
     * 沙尘暴
     */
    @JsonSerialize(nullsUsing = NullSerializer.class)
    private Integer weatherSaSt;
    /**
     * 浮尘
     */
    @JsonSerialize(nullsUsing = NullSerializer.class)
    private Integer weatherFlDu;

    /**
     * 尘卷风
     */
    @JsonSerialize(nullsUsing = NullSerializer.class)
    private Integer weatherDuWhr;
    /**
     * 霾
     */
    @JsonSerialize(nullsUsing = NullSerializer.class)
    private Integer weatherHaze;

    /**
     * 冰雹
     */
    @JsonSerialize(nullsUsing = NullSerializer.class)
    private Integer weatherHail;

    /**
     * 雷暴
     */
    @JsonSerialize(nullsUsing = NullSerializer.class)
    private Integer weatherThund;

    /**
     * 龙卷
     */
    @JsonSerialize(nullsUsing = NullSerializer.class)
    private Integer weatherTord;

    /**
     * 飑
     */
    @JsonSerialize(nullsUsing = NullSerializer.class)
    private Integer weatherSqua;

    /**
     * 风速(瞬时风速)
     */
    @JsonSerialize(nullsUsing = NullSerializer.class)
    private Double winSpeed;

    /**
     * 风向(瞬时风向)
     */
    @JsonSerialize(nullsUsing = NullSerializer.class)
    private Double winDirect;

    /**
     * 2分钟平均风向(角度)
     */
    @JsonSerialize(nullsUsing = NullSerializer.class)
    private Double winDirectAvgTenMinute;

    /**
     * 平均2分钟风速
     */
    @JsonSerialize(nullsUsing = NullSerializer.class)
    private Double winSpeedAvgTwoMinute;

    /**
     * 逐小时10分钟平均风向风速
     */
    @JsonFormat(timezone = "GMT+8", pattern = "HH:mm")
    private Double winDirectAvgTwoMinute;

    /**
     * 平均10分钟风速
     */
    @JsonSerialize(nullsUsing = NullSerializer.class)
    private Double winSpeedAvgTenMinute;

    /**
     * 最大风速的风向(角度) (°)
     */
    @JsonSerialize(nullsUsing = NullSerializer.class)
    private Double windDirectMax;

    /**
     * 最大风速 (m·s-1)
     */
    @JsonSerialize(nullsUsing = NullSerializer.class)
    private Double windSpeedMax;

    /**
     * 最大风速出现时间
     */
    @JsonFormat(timezone = "GMT+8", pattern = "HH:mm")
    private Date windSpeedMaxAppearTime;

    /**
     * 极大风速的风向(角度) (°)
     */
    @JsonSerialize(nullsUsing = NullSerializer.class)
    private Double windDirectInstMax;

    /**
     * 极大风速 (m·s-1)
     */
    @JsonSerialize(nullsUsing = NullSerializer.class)
    private Double windSpeedInstMax;

    /**
     * 极大风速出现时间
     */
    @JsonFormat(timezone = "GMT+8", pattern = "HH:mm")
    private Date windSpeedInstMaxAppearTime;

    /**
     * 平均地面温度 (℃)
     */
    @JsonSerialize(nullsUsing = NullSerializer.class)
    private Double gstAvg;

    /**
     * 最高地面温度 (℃)
     */
    @JsonSerialize(nullsUsing = NullSerializer.class)
    private Double gstMax;

    /**
     * 最高地面温度出现时间
     */
    @JsonFormat(timezone = "GMT+8", pattern = "HH:mm")
    private Date gstMaxAppearTime;

    /**
     * 最低地面温度 (℃)
     */
    @JsonSerialize(nullsUsing = NullSerializer.class)
    private Double gstMin;

    /**
     * 最低地面温度出现时间
     */
    @JsonFormat(timezone = "GMT+8", pattern = "HH:mm")
    private Date gstMinAppearTime;

    /**
     * 平均5cm地温 (℃)
     */
    @JsonSerialize(nullsUsing = NullSerializer.class)
    private Double gstAvg5cm;

    /**
     * 平均10cm地温 (℃)
     */
    @JsonSerialize(nullsUsing = NullSerializer.class)
    private Double gstAvg10cm;

    /**
     * 平均15cm地温 (℃)
     */
    @JsonSerialize(nullsUsing = NullSerializer.class)
    private Double gstAvg15cm;

    /**
     * 平均20cm地温 (℃)
     */
    @JsonSerialize(nullsUsing = NullSerializer.class)
    private Double gstAvg20cm;

    /**
     * 平均40cm地温 (℃)
     */
    @JsonSerialize(nullsUsing = NullSerializer.class)
    private Double gstAvg40cm;

    /**
     * 平均80cm地温 (℃)
     */
    @JsonSerialize(nullsUsing = NullSerializer.class)
    private Double gstAvg80cm;

    /**
     * 平均160cm地温 (℃)
     */
    @JsonSerialize(nullsUsing = NullSerializer.class)
    private Double gstAvg160cm;

    /**
     * 平均320cm地温 (℃)
     */
    @JsonSerialize(nullsUsing = NullSerializer.class)
    private Double gstAvg320cm;

    /**
     * 日照时数（直接辐射计算值）(h)
     */
    @JsonSerialize(nullsUsing = NullSerializer.class)
    private Double ssh;

    /**
     * 日出时间
     */
    private String sunristTime;

    /**
     * 日落时间
     */
    private String sunsetTime;

    /**
     * 平均草面(雪面)温度 (℃)
     */
    @JsonSerialize(nullsUsing = NullSerializer.class)
    private Double lgstAvg;

    /**
     * 草面(雪面)最高温度 (℃)
     */
    @JsonSerialize(nullsUsing = NullSerializer.class)
    private Double lgstMax;

    /**
     * 草面(雪面)最高温度出现时间
     */
    @JsonFormat(timezone = "GMT+8", pattern = "HH:mm")
    private Date lgstMaxAppearTime;

    /**
     * 草面(雪面)最低温度 (℃)
     */
    @JsonSerialize(nullsUsing = NullSerializer.class)
    private Double lgstMin;

    /**
     * 草面(雪面)最低温度出现时间
     */
    @JsonFormat(timezone = "GMT+8", pattern = "HH:mm")
    private Date lgstMinAppearTime;

}